#!/bin/bash

# 快速缓存清理脚本
# 用于快速清空各种缓存

# 设置颜色
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

# 脚本目录
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"

echo -e "${BLUE}🚀 开始清理缓存...${NC}"
echo "项目目录: $PROJECT_DIR"
echo "================================"

# 1. 运行Python缓存清理脚本
echo -e "${YELLOW}1. 运行Django缓存清理脚本${NC}"
cd "$PROJECT_DIR"
if python scripts/clear_cache.py; then
    echo -e "${GREEN}✅ Django缓存清理完成${NC}"
else
    echo -e "${RED}❌ Django缓存清理失败${NC}"
fi
echo ""

# 2. 清理Redis（如果可用）
echo -e "${YELLOW}2. 直接清理Redis缓存${NC}"
if command -v redis-cli &> /dev/null; then
    # 清理数据库0（默认缓存）
    redis-cli -n 0 FLUSHDB
    echo -e "${GREEN}✅ Redis数据库0已清空${NC}"
    
    # 清理数据库1（session缓存）
    redis-cli -n 1 FLUSHDB
    echo -e "${GREEN}✅ Redis数据库1已清空${NC}"
else
    echo -e "${YELLOW}⚠️ Redis命令行工具不可用，跳过直接Redis清理${NC}"
fi
echo ""

# 3. 清理临时文件
echo -e "${YELLOW}3. 清理临时文件${NC}"
find "$PROJECT_DIR" -name "*.pyc" -delete 2>/dev/null
find "$PROJECT_DIR" -name "__pycache__" -type d -exec rm -rf {} + 2>/dev/null
echo -e "${GREEN}✅ Python缓存文件已清理${NC}"
echo ""

# 4. 清理日志文件（可选）
echo -e "${YELLOW}4. 清理旧日志文件${NC}"
if [ -d "$PROJECT_DIR/logs" ]; then
    # 保留最近7天的日志，删除更旧的
    find "$PROJECT_DIR/logs" -name "*.log*" -mtime +7 -delete 2>/dev/null
    echo -e "${GREEN}✅ 旧日志文件已清理${NC}"
else
    echo -e "${YELLOW}⚠️ 日志目录不存在，跳过日志清理${NC}"
fi
echo ""

# 5. 重启服务建议
echo -e "${YELLOW}5. 服务重启建议${NC}"
echo -e "${BLUE}💡 建议执行以下操作：${NC}"
echo "   - 重启Django开发服务器 (python manage.py runserver)"
echo "   - 重启Redis服务器 (sudo systemctl restart redis)"
echo "   - 在浏览器中按 Ctrl+F5 强制刷新页面"
echo ""

echo -e "${GREEN}🎉 缓存清理完成！${NC}"
echo "================================"

# 显示清理后的状态
echo -e "${BLUE}📊 清理后状态：${NC}"
if command -v redis-cli &> /dev/null; then
    echo "Redis数据库0大小: $(redis-cli -n 0 DBSIZE) 个键"
    echo "Redis数据库1大小: $(redis-cli -n 1 DBSIZE) 个键"
fi

# 检查Python缓存文件
pyc_count=$(find "$PROJECT_DIR" -name "*.pyc" 2>/dev/null | wc -l)
pycache_count=$(find "$PROJECT_DIR" -name "__pycache__" -type d 2>/dev/null | wc -l)
echo "剩余.pyc文件: $pyc_count 个"
echo "剩余__pycache__目录: $pycache_count 个" 